iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
Python

Python 數值與數學模組介紹與應用系列 第 18

Day18.04.decimal — 十進制定點和浮點算術2

  • 分享至 

  • xImage
  •  

上一篇簡單的介紹了一下十進制定點和浮點算術,今天就來帶大家熟悉下用法:

快速入門教程

  • 基本使用

    • 首先,導入 decimal 模組,並使用 getcontext() 方法查看當前的上下文設置:
      from decimal import *
      getcontext()
      
    • 可以根據需求自定義精度、捨入方式或啟用的陷阱:
      getcontext().prec = 7
      
  • 創建 Decimal 實例

    • 使用 Decimal 對象可根據不同數據類型創建數字實例:
      Decimal(10)  # 整數
      Decimal('10')  # 字符串
      Decimal('3.14')  # 小數
      Decimal(3.14)  # 浮點數
      Decimal((0, (3, 1, 4), -2))  # 元組
      
  • 處理特殊值

    • Decimal 還能表示特殊值,如:
      Decimal('NaN')  # 非數字
      Decimal('-Infinity')  # 負無窮大
      
  • 信號處理

    • 捕獲 FloatOperation 信號來處理浮點數轉換錯誤:
      c = getcontext()
      c.traps[FloatOperation] = True
      Decimal(3.14)
      
  • 精度和捨入

    • 精度設定會直接影響數值運算結果:
      getcontext().prec = 6
      Decimal('3.1415926535') + Decimal('2.7182818285')
      # Decimal('5.85987')
      getcontext().rounding = ROUND_UP
      Decimal('3.1415926535') + Decimal('2.7182818285')
      # Decimal('5.85988')
      
  • 數學操作

    • Decimal 支持高精度的數學運算函數:
      getcontext().prec = 28
      Decimal(2).sqrt()  # 開平方根
      Decimal(1).exp()  # 指數運算
      Decimal('10').ln()  # 自然對數
      Decimal('10').log10()  # 常用對數
      
  • 量化數值

    • 使用 quantize() 函數來控制數值的精度和捨入方式:
      Decimal('7.325').quantize(Decimal('.01'), rounding=ROUND_DOWN)
      # Decimal('7.32')
      Decimal('7.325').quantize(Decimal('1.'), rounding=ROUND_UP)
      # Decimal('8')
      
  • 上下文管理

    • 可創建自定義上下文來更靈活地控制計算:
      myothercontext = Context(prec=60, rounding=ROUND_HALF_DOWN)
      setcontext(myothercontext)
      Decimal(1) / Decimal(7)
      
  • 信號旗標

    • 使用 clear_flags() 來清除錯誤旗標:
      setcontext(ExtendedContext)
      getcontext().clear_flags()
      Decimal(355) / Decimal(113)
      
  • 陷阱設置

    • 設置陷阱以捕捉異常,如除零錯誤:
      getcontext().traps[DivisionByZero] = 1
      Decimal(1) / Decimal(0)
      # Traceback (most recent call last):
      # decimal.DivisionByZero: x / 0
      

小總結下:decimal 模組提供了處理精確數學運算的強大功能,用戶只需在初始設置上下文後便可輕鬆進行計算。


上一篇
Day17.04.decimal — 十進制定點和浮點算術1
下一篇
Day19.04.decimal — 十進制定點和浮點算術3
系列文
Python 數值與數學模組介紹與應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言